﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using vw08_equest.Areas.Administrator.Models;
using System.IO;

namespace vw08_equest.Areas.Administrator.Controllers
{
    public class AdminDocumentController : Controller
    {
        //
        // GET: /Administrator/AdminDocument/

        public ActionResult Index(string message = "", string level = "")
        {
            if (level == "Success")
            {
                ViewBag.Success = message;
            }
            if (level == "Warning")
            {
                ViewBag.Warning = message;
            }
            if (level == "Error")
            {
                ViewBag.Error = message;
            }
            using (AdminEquestDataContext db = new AdminEquestDataContext())
            {
                List<Document> model = new List<Document>();
                model = db.Documents.Where(m => m.IsDelete == false).OrderBy(m => m.DocumentName).ToList();
                return View(model);
            }
        }

        public ActionResult CreateDocument()
        {
            using (AdminEquestDataContext db = new AdminEquestDataContext())
            {
                Document model = new Document();
                return View(model);
            }
        }

        [HttpPost]
        public ActionResult CreateDocument(Document model, HttpPostedFileBase file)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    ViewBag.Warning = "Dữ liệu tài liệu không đúng!";
                    return View(model);
                }
                using (AdminEquestDataContext db = new AdminEquestDataContext())
                {
                    /*hình ảnh*/
                    if (!(file == null || file.ContentLength == 0))
                    {
                        string extension = Path.GetExtension(file.FileName);
                        extension = extension.ToLower();
                        if (!(extension == ".jpg" || extension == ".gif" || extension == ".png"))
                        {
                            ViewBag.Warning = "Hình ảnh không đúng định dạng!";
                            return View(model);
                        }
                        string physicalPath = Server.MapPath(Url.Content("~/Resource/document"));
                        string fileName = String.Format("{0}" + extension, Guid.NewGuid().ToString());
                        string imagePath = Path.Combine(physicalPath, fileName);
                        file.SaveAs(imagePath);
                        model.Image = "~/Resource/document/" + fileName;
                    }
                    /*end*/
                    model.Default();
                    db.GetTable(typeof(Document)).InsertOnSubmit(model);
                    db.SubmitChanges();
                    return RedirectToAction("Index", new { message = "Thêm tài liệu thành công!", level = "Success" });
                }
            }
            catch (Exception)
            {
                ViewBag.Error = "Lỗi tạo tài liệu!";
                return View(model);
            }
        }

        public ActionResult EditDocument(int id)
        {
            using (AdminEquestDataContext db = new AdminEquestDataContext())
            {
                Document model = db.Documents.Where(m => m.DocumentID == id).SingleOrDefault();
                return View(model);
            }
        }

        [HttpPost]
        public ActionResult EditDocument(Document model, HttpPostedFileBase file)
        {
            Document updateModel = new Document();
            try
            {
                if (!ModelState.IsValid)
                {
                    ViewBag.Warning = "Dữ liệu tài liệu không đúng!";
                    return View(model);
                }
                using (AdminEquestDataContext db = new AdminEquestDataContext())
                {
                    updateModel = db.Documents.Where(m => m.DocumentID == model.DocumentID).SingleOrDefault();
                    updateModel.DocumentName = model.DocumentName;
                    updateModel.DocumentDescription = model.DocumentDescription;
                    updateModel.Link = model.Link;
                    updateModel.DocumentContent = model.DocumentContent == null ? "" : model.DocumentContent;
                    /*hình ảnh*/
                    if (!(file == null || file.ContentLength == 0))
                    {
                        string extension = Path.GetExtension(file.FileName);
                        extension = extension.ToLower();
                        if (!(extension == ".jpg" || extension == ".gif" || extension == ".png"))
                        {
                            ViewBag.Warning = "Hình ảnh không đúng định dạng!";
                            return View(updateModel);
                        }
                        string physicalPath = Server.MapPath(Url.Content("~/Resource/document"));
                        string fileName = String.Format("{0}" + extension, Guid.NewGuid().ToString());
                        string imagePath = Path.Combine(physicalPath, fileName);
                        file.SaveAs(imagePath);
                        model.Image = "~/Resource/document/" + fileName;
                        updateModel.Image = model.Image;
                    }
                    /*end*/
                    db.SubmitChanges();
                    ViewBag.Success = "Cập nhật tài liệu thành công!";
                    return View(updateModel);
                }
            }
            catch (Exception)
            {
                ViewBag.Error = "Lỗi cập nhật tài liệu!";
                return View(updateModel);
            }
        }

        [HttpPost]
        public ActionResult DeleteDocument(FormCollection form)
        {
            try
            {
                int DocumentID = Convert.ToInt32(form["id"]);
                using (AdminEquestDataContext db = new AdminEquestDataContext())
                {
                    Document model = db.Documents.Where(m => m.DocumentID == DocumentID).SingleOrDefault();
                    model.IsDelete = true;
                    db.SubmitChanges();
                    return RedirectToAction("Index", new { message = "Xoá tài liệu thành công!", level = "Success" });
                }
            }
            catch (Exception)
            {
                return RedirectToAction("Index", new { message = "Lỗi xóa tài liệu!", level = "Error" });
            }
        }
    }
}
